<?php

namespace UFSW\JugadorBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use UFSW\DataBaseBundle\Entity\Jugador;
use UFSW\DataBaseBundle\Entity\Usuario;

class JugadorController extends Controller
{
    /**
     * Vistas: son los archivos html a los que vamos a redireccionar repetidas veces
     */
    protected $indexVista;
    protected $verVista;
    protected $nuevoVista;
    protected $editarVista;
    
    public function __construct() {
        $this->indexVista = 'JugadorBundle:Jugador:index.html.twig';
        $this->portadaVista = null;
        $this->verVista = null;
        $this->nuevoVista = 'JugadorBundle:Jugador:nuevo.html.twig';
        $this->editarVista = null;
    }
    
    public function nuevoAction($usuario)
    {
        $user = $this->getUserBySlug($usuario);
        return $this->render($this->nuevoVista, array('usuario' => $user));
    }
    
    public function nuevoJugadorAction($usuario)
    {
        $user = $this->getUserBySlug($usuario);
        $jugador = $this->inicializarJugador($user);
        
        $em = $this->getDoctrine()->getManager();
        $em->persist($jugador);
        $em->flush();
        
        return $this->redirect($this->generateUrl('jugador_inicio', array('jugador' => $jugador)));
    }
    
    public function indexAction($jugador)
    {
        $user = $this->getUserBySlug($jugador);
        
        $em = $this->getDoctrine()->getManager();
        $player = $em->getRepository('UFSWDataBaseBundle:Jugador')->findByUniqueId($user->getIdentificador(),$user->getNumIdentificador(),$user->getFecInteger());
        
        return $this->render($this->indexVista, array('jugador' => $player));
    }
    
    
    private function getUserBySlug($slug)
    {
        $em = $this->getDoctrine()->getManager();
        $user = $em->getRepository('UFSWDataBaseBundle:Usuario')->findOneBySlug($slug);
        
        return $user;
    }
    private function inicializarJugador(Usuario $usuario)
    {
        $jugador = new Jugador();
        $jugador->setFecNac($usuario->getFecInteger());
        $jugador->setNumIdentificador($usuario->getNumIdentificador());
        $jugador->setIdentificador($usuario->getIdentificador());
        $jugador->setUsuario($usuario);
         
        return $jugador;
    }
}
